<?php

namespace app\logic;

class Pay
{
    private static $obj = null;

    /**
     * 类入口
     * @return Pay|null
     */
    public static function getInstance()
    {
        if (is_null(self::$obj))
            self::$obj = new self();
        return self::$obj;
    }

    /**
     * 发起支付
     * @param int $int_pay_id 支付方式对应的编号
     * @param string $str_out_trade_no 商户订单编号(传给上游的)
     * @param float $float_order_amount 订单金额（单位元）
     * @param string $str_openid 微信公众号对应的openid
     * @return array|bool|string
     */
    public function toPay($int_pay_id, $str_out_trade_no, $float_order_amount, $str_openid = '')
    {
        switch ($int_pay_id) {
            case 100: // 支付宝APP支付
                return AliPay::getInstance()->aliAppPay($str_out_trade_no, $float_order_amount);
                break;
            case 200: // 微信APP支付
                return WeChatPay::getInstance()->weChatAppPay($str_out_trade_no, $float_order_amount);
                break;
            case 300: // 微信公众号支付
                if ($str_openid == '') return false;
                return WeChatPay::getInstance()->weChatPublicNumberPay($str_out_trade_no, $float_order_amount, $str_openid);
                break;
            case 400: // 其他支付

                break;
            default:
                return false;
        }
    }
}
